package main

import (
	"crontab/master"
	"flag"
	"fmt"
	"runtime"
	"time"
)

func initEnv() {
	runtime.GOMAXPROCS(runtime.NumCPU())
}

var (
	confFile string //配置文件路径
)

//解析命令行参数
func initArgs() {
	//geshi:master -config ./ccc.config
	flag.StringVar(&confFile, "config", "./master.json", "指定master配置文件")
	flag.Parse()

}

func main() {
	var (
		err error
	)
	//初始化命令行参数
	initArgs()
	/**
	初始化线程
	*/
	initEnv()

	//加载配置
	if err = master.InitConfig(confFile); err != nil {
		goto ERR
	}

	//初始化worker管理，主要是为了服务发现用的
	if err = master.InitWorkerMgr(); err != nil {
		goto ERR
	}
	if err = master.InitLogMgr(); err != nil {
		goto ERR
	}

	//启动任务管理器，也就是zookeeper，要先启动zk，因为http内部调用了zk
	if err = master.InitJobMgr(); err != nil {
		goto ERR
	}
	//启动http服务ssss
	if err = master.InitApiServer(); err != nil {
		goto ERR
	}
	fmt.Println("等待事件")

	for {
		time.Sleep(1 * time.Second)
	}

	return

ERR:
	fmt.Println(err)
}
